Skip to content

feat(gfn): GeForce NOW 原生客户端 (GFN-App) 控制器支持 - #1

Open
zeejaytan wants to merge 10 commits into
v2from
feat/gfn-app-support
Open

feat(gfn): GeForce NOW 原生客户端 (GFN-App) 控制器支持#1
zeejaytan wants to merge 10 commits into
v2from
feat/gfn-app-support

Conversation

@zeejaytan

Copy link
Copy Markdown
Owner

概述

新增 GeForce NOW 原生客户端(GFN-App) 控制器支持,让终末地云串流玩家也能使用前台(Win32 + Seize)模式运行任务。

本 PR 面向个人 fork 的 v2,不提交上游。已纳入上游 PR MaaEnd#4178 的评审反馈(见下文设计变更)。

主要改动

FR1 — GFN-App 控制器(assets/interface.json + locales)

  • 新增 GFN-App 控制器:type=Win32class_regex=CEFCLIENTwindow_regex=Endfield.*on GeForce NOWscreencap=PrintWindowmouse/keyboard=Seize
  • 五语言 controller.GFN-App.label/description 文案。

FR3 — 任务控制器解锁(assets/tasks/**

  • 所有支持 Win32-Front 的任务追加 GFN-App,排除依赖本地游戏安装/进程的任务。

FR4 — 串流压缩色差覆盖资源(resource_gfn

  • 720p 串流下精确 ColorMatch 因压缩伪影失配,新增 ButtonColor.json / SceneLoading.json 颜色容差覆盖,随 GFN-App 控制器 attach_resource_path 加载。

设计变更(依上游 PR MaaEnd#4178 评审反馈 @ocsin1

评审指出 MaaEnd 的 Win32 分辨率预检只要求 16:9、不主动缩放、不强制 720p;原设计新增的强制 1280x720 缩放 sink 与该契约相悖。据此:

  • 删除 taskersink/gfnwindow(强制缩放 + ±2px 容差 + 右下角贴靠),GFN-App 作为 type=Win32 控制器直接复用既有 aspectratio 预检(16:9 且 ≥1280x720,MaaFramework 对截图缩放)。
  • 移除孤立 i18n:gfn_stream_hint / gfn_resize_failedi18n.go + 2 个 HTML 模板 + 5 个 go-service locale 各 7 键)。
  • 保留 pkg/control.GetWin32Hwndaspectratio 仍复用)与 resource_gfn 颜色容差覆盖。

对比佐证:姊妹项目 MaaNTE 的 PinkPawHeist 硬性要求精确 1280x720(其 pipeline ROI 不走缩放);MaaEnd pipeline 走 MaaFramework 缩放,任意 16:9 ≥720p 均可,故不继承精确 720p 与 ±2px 容差逻辑。

框架侧无需改动:MaaFramework Win32 控制器已通过 PrintWindow(PW_CLIENTONLY | PW_RENDERFULLCONTENT) 支持 CEF 流窗口截图,Seize 输入与 class_regex 匹配均为通用能力。

测试

  • gofmt 干净;go build ./... 在 linux + windows 双目标通过;5 个 locale JSON 合法。
  • 真机 Windows + GeForce NOW 环境待复测(分辨率门禁、PrintWindow 截图、Seize 输入)。

🤖 Generated with Claude Code

zeejaytan and others added 8 commits July 13, 2026 02:20
以 MaaNTE feat/gfn-app-support 的 PRD 与实测结论为蓝本,改写为 MaaEnd
语境(Go agent taskersink 架构)。范围限定 GFN 原生客户端(GFN-App),
明确控制器条目、Go 侧检测与窗口自动缩放、任务解锁范围与排除项、
与现有预检链的交互,以及待 Windows 实机验证的开放问题。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- assets/interface.json 新增 GFN-App Win32 控制器(CEFCLIENT /
  Endfield.*on GeForce NOW / PrintWindow + Seize),窗口特征待实测回填
- 5 个 interface locale 同步 controller.GFN-App.label/.description

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 新增 taskersink/gfnwindow:GFN-App 控制器下任务启动时把流窗口
  客户区自动调整为 1280x720 基准(还原/居中/工作区校验/轮询确认),
  失败时优雅降级不中断任务,经 maafocus 输出用户引导
- 缩放成功仍提示串流渲染分辨率在会话建立时锁定的已知限制
- controller info → HWND 解析提炼为 pkg/control.GetWin32Hwnd,
  aspectratio 改为复用,消除重复实现
- 注册顺序置于 aspectratio 之前,保证缩放先于分辨率强校验
- 新增 gfn-stream-hint / gfn-resize-failed HTML 模板与 5 语言文案

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
在所有含 Win32-Front 的任务 controller 数组中追加 GFN-App(43 处)。
排除依赖本地游戏安装的任务:pretasks/GameSetting(读取本地游戏配置)、
AccountSwitch(本地账号切换),详见 PRD FR3。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
实测确认 GFN 原生客户端标题为 "Arknights: Endfield on GeForce NOW",
现有正则 Endfield.*on GeForce NOW 命中,关闭 PRD 风险 R1;
同步修正 FR2 缩放描述与实现一致(实测矩形差值而非 AdjustWindowRectEx)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
两个 GFN 实测问题修复(日志包 20260713-042409 / 20260713-045337):

1. gfnwindow 缩放成功后触发 PostScreencap 刷新控制器缓存分辨率。
   此前 aspectratio 在同一次任务启动事件中读到缩放前的旧尺寸
   (实测 1920x1200),导致首次运行被误停。

2. 新增 resource_gfn 覆盖资源,随 GFN-App 控制器 attach_resource_path
   加载。GFN 串流帧经 H.264/HEVC 编码后颜色偏移数个单位,基础资源
   1~2 单位宽的精确 ColorMatch 全部失配(实测品牌黄 hue 28-29 →
   串流 26-31,连通像素 47/3000),SceneManager 颜色校准门禁必然
   误报"颜色识别失败"。覆盖放宽:
   - Common/Button/ButtonColor.json 黄/白/灰按钮底色容差
   - SceneManager/SceneLoading.json 三个校准色块 Success 判定
     (hue ±4、饱和度下限 200)
   容差值按 on_error 截图实测校准。PRD 风险 R3 已回填定性结论。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
使用显示器 rcWork 锚定(排除任务栏),缩放路径改贴右下角;客户区尺寸已匹配时仍单独执行一次仅移动的贴靠(SWP_NOSIZE),对齐 MaaNTE 97cc62e 的 bottom_right 行为。贴靠失败仅记 DEBUG,不影响任务继续。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
依上游 PR MaaEnd#4178 评审反馈 (@ocsin1):MaaEnd 的 Win32 分辨率预检只要求
16:9 且不主动缩放、不强制 720p;专用强制缩放与该契约相悖。

- 删除 taskersink/gfnwindow(强制 1280x720 缩放 + ±2px 容差 + 右下角贴靠)
- register.go 不再注册 gfnwindow;GFN-App 作为 Win32 控制器直接走 aspectratio
  预检(16:9 且 ≥1280x720,由 MaaFramework 缩放截图)
- 移除孤立 i18n:gfn_stream_hint / gfn_resize_failed(i18n.go + 2 个 HTML 模板
  + 5 个 go-service locale 各 7 键)
- PRD 回填设计变更:记录评审反馈、与 MaaNTE PinkPawHeist(硬性精确 720p,因其
  pipeline 不走缩放)的对比,重写 FR2/FR4/R4/目标/验收标准
- 保留 pkg/control.GetWin32Hwnd(aspectratio 仍复用)与 resource_gfn 颜色容差覆盖

框架侧无需改动:MaaFramework Win32 控制器已通过 PrintWindow(PW_CLIENTONLY |
PW_RENDERFULLCONTENT) 支持 CEF 流窗口截图,Seize 输入与 class_regex 匹配均为通用能力。

验证:gofmt 干净;go build ./... 在 linux + windows 双目标通过;5 个 locale JSON 合法。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Add GFN-App Win32 controller for GeForce NOW native client (foreground + Seize)

✨ Enhancement 📝 Documentation ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Add a new Win32 controller (GFN-App) to support GeForce NOW native client streaming.
• Unlock Win32-Front-compatible tasks for GFN-App and load GFN-specific recognition overrides.
• Document design constraints and refactor shared Win32 HWND parsing for prechecks.
Diagram

graph TD
A["assets/interface.json (GFN-App)"] --> B["MaaFramework Win32"] --> C["GetWin32Hwnd()"] --> D["aspectratio precheck"] --> E["tasks/*.json unlocked"]
A --> F["resource_gfn overrides"] --> G["ColorMatch tolerance"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. GFN-specific forced window resize sink (e.g., 1280x720 enforcement)
  • ➕ Could make ROI assumptions explicit if the pipeline truly required fixed 720p frames.
  • ➕ Could help users reach a known-good client-area size automatically.
  • ➖ Conflicts with MaaEnd's existing Win32 contract (16:9 + minimum size, no proactive scaling).
  • ➖ Doesn't solve the core GFN limitation that stream render resolution is locked at session start.
  • ➖ Adds platform-specific complexity and more failure modes (window management, DPI, tolerance rules).
2. Extend Win32-Front regex instead of adding a new controller
  • ➕ Fewer controller entries exposed to users.
  • ➕ Could reduce duplicated UX strings.
  • ➖ Blurs fundamentally different capture/input constraints (UnityWndClass + ScreenDC vs CEFCLIENT + PrintWindow).
  • ➖ Makes future troubleshooting harder (GFN-specific overrides/resources become less discoverable).
3. Use ScreenDC instead of PrintWindow for GFN-App capture
  • ➕ Often more robust when PrintWindow returns black/partial frames on some GPU-composited windows.
  • ➖ Requires strict foreground + unobstructed window; more susceptible to overlays/occlusion.
  • ➖ PrintWindow is specifically chosen here to match known CEF stream window behavior.

Recommendation: Keep the PR's approach: model GFN-App as its own Win32 controller, reuse the existing aspectratio gate (no forced resizing), and load GFN-only resource overrides for ColorMatch brittleness. This cleanly separates GFN constraints from local Win32 behavior, minimizes Go-side complexity, and addresses the empirically observed failure mode (stream compression shifting narrow ColorMatch bands).

Files changed (51) +487 / -36

Enhancement (3) +228 / -0
interface.jsonAdd GFN-App Win32 controller (CEFCLIENT + PrintWindow + Seize) +20/-0

Add GFN-App Win32 controller (CEFCLIENT + PrintWindow + Seize)

• Adds a new GFN-App controller entry matching GeForce NOW native client stream windows via class/title regex. Uses PrintWindow for screencap and Seize for mouse/keyboard, and attaches resource_gfn for stream-specific recognition overrides.

assets/interface.json

ButtonColor.jsonAdd GFN-only ButtonColor ColorMatch tolerance overrides +116/-0

Add GFN-only ButtonColor ColorMatch tolerance overrides

• Introduces GFN-specific pipeline overrides that widen tight ColorMatch bands for common button background colors. Intended to compensate for H.264/HEVC compression artifacts and chroma subsampling shifts in GFN streams.

assets/resource_gfn/pipeline/Common/Button/ButtonColor.json

SceneLoading.jsonAdd GFN-only loading color-check tolerance overrides +92/-0

Add GFN-only loading color-check tolerance overrides

• Adds GFN-specific overrides for the SceneLoading color-accuracy checks by widening hue tolerances and lowering saturation thresholds. Prevents false 'color recognition failed' reports caused by stream encoding drift.

assets/resource_gfn/pipeline/SceneManager/SceneLoading.json

Refactor (2) +30 / -34
utils.goAdd shared GetWin32Hwnd() helper for Win32 controllers +29/-0

Add shared GetWin32Hwnd() helper for Win32 controllers

• Introduces GetWin32Hwnd to parse Maa controller info JSON and extract the HWND. Adds validation for nil controller, empty info, non-Win32 type, and missing hwnd.

agent/go-service/pkg/control/utils.go

altenter_windows.goReuse control.GetWin32Hwnd in Win32 Alt+Enter path +1/-34

Reuse control.GetWin32Hwnd in Win32 Alt+Enter path

• Removes local controller-info parsing structs/helpers and calls the centralized GetWin32Hwnd function instead. Keeps the existing Win32 Alt+Enter logic while reducing duplicate parsing code.

agent/go-service/taskersink/aspectratio/altenter_windows.go

Documentation (3) +174 / -0
register.goClarify GFN-App uses existing aspectratio contract (no forced resize) +3/-0

Clarify GFN-App uses existing aspectratio contract (no forced resize)

• Adds comments documenting that GFN-App is treated as a standard Win32 controller and therefore reuses the aspectratio precheck behavior. Explicitly notes that no GFN-specific resize sink is registered/needed.

agent/go-service/register.go

README.mdLink new GFN-App support PRD in developer docs index +1/-0

Link new GFN-App support PRD in developer docs index

• Adds an entry pointing to the new GFN-App support PRD in the Chinese developer README. Helps contributors discover the design constraints and rationale.

docs/zh_cn/developers/README.md

gfn-app-support-prd.mdAdd PRD documenting GFN-App requirements and design constraints +170/-0

Add PRD documenting GFN-App requirements and design constraints

• Introduces a PRD describing the GFN native client window characteristics, supported scope, and non-goals. Captures the design change to reuse existing Win32 aspectratio checks and documents risks (notably stream compression causing ColorMatch drift).

docs/zh_cn/developers/gfn-app-support-prd.md

Other (43) +55 / -2
en_us.jsonAdd GFN-App controller label/description (en_us) +2/-0

Add GFN-App controller label/description (en_us)

• Adds localized strings for controller.GFN-App.label and controller.GFN-App.description. The description documents foreground-only behavior and recommends locking stream resolution to 1280x720.

assets/locales/interface/en_us.json

ja_jp.jsonAdd GFN-App controller label/description (ja_jp) +2/-0

Add GFN-App controller label/description (ja_jp)

• Adds localized strings for the new GFN-App controller label/description in Japanese. Includes the foreground-only constraint and a 1280x720 stream-resolution recommendation.

assets/locales/interface/ja_jp.json

ko_kr.jsonAdd GFN-App controller label/description (ko_kr) +2/-0

Add GFN-App controller label/description (ko_kr)

• Adds Korean localization entries for controller.GFN-App.label and controller.GFN-App.description. Communicates Seize/foreground limitation and 1280x720 recommendation.

assets/locales/interface/ko_kr.json

zh_cn.jsonAdd GFN-App controller label/description (zh_cn) +2/-0

Add GFN-App controller label/description (zh_cn)

• Adds Simplified Chinese localization entries for GFN-App controller label/description. Notes foreground-only mode and suggests fixing stream resolution to 1280x720 in GFN settings.

assets/locales/interface/zh_cn.json

zh_tw.jsonAdd GFN-App controller label/description (zh_tw) +2/-0

Add GFN-App controller label/description (zh_tw)

• Adds Traditional Chinese localization entries for the GFN-App controller label/description. Documents the foreground-only constraint and recommends 1280x720 stream resolution.

assets/locales/interface/zh_tw.json

AutoCollect.jsonEnable AutoCollect on GFN-App +1/-0

Enable AutoCollect on GFN-App

• Adds GFN-App to the supported controller list alongside Win32-Front. Allows running AutoCollect in GFN foreground mode.

assets/tasks/AutoCollect.json

AutoEcoFarm.jsonEnable AutoEcoFarm on GFN-App +1/-0

Enable AutoEcoFarm on GFN-App

• Adds GFN-App to controllers for AutoEcoFarm where Win32-Front was already supported. Keeps behavior identical to Win32-Front constraints.

assets/tasks/AutoEcoFarm.json

AutoEssence.jsonEnable AutoEssence on GFN-App +1/-0

Enable AutoEssence on GFN-App

• Adds GFN-App to the controller list for AutoEssence. This unlocks the task for GeForce NOW native client sessions.

assets/tasks/AutoEssence.json

AutoSell.jsonEnable AutoSell on GFN-App +1/-0

Enable AutoSell on GFN-App

• Adds GFN-App as an allowed controller for AutoSell. Keeps existing Win32-Front and Wlroots support unchanged.

assets/tasks/AutoSell.json

AutoStockStaple.jsonEnable AutoStockStaple on GFN-App +1/-0

Enable AutoStockStaple on GFN-App

• Adds GFN-App to the controller list for AutoStockStaple. Preserves the existing multi-controller support ordering.

assets/tasks/AutoStockStaple.json

AutoStockpile.jsonEnable AutoStockpile on GFN-App +1/-0

Enable AutoStockpile on GFN-App

• Adds GFN-App alongside Win32-Front for AutoStockpile. Enables this task for GFN stream sessions using foreground control.

assets/tasks/AutoStockpile.json

AutoUseSpMedication.jsonEnable AutoUseSpMedication on GFN-App +1/-0

Enable AutoUseSpMedication on GFN-App

• Adds GFN-App to the supported controllers for AutoUseSpMedication. Maintains existing Win32/Wlroots/ADB compatibility.

assets/tasks/AutoUseSpMedication.json

BakerEntry.jsonEnable BakerEntry on GFN-App +1/-0

Enable BakerEntry on GFN-App

• Adds GFN-App support to BakerEntry where Win32-Front already applied. Keeps ADB/PlayCover/Wlroots unchanged.

assets/tasks/BakerEntry.json

BatchAddFriends.jsonEnable BatchAddFriends on GFN-App +1/-0

Enable BatchAddFriends on GFN-App

• Adds GFN-App to the controller list for BatchAddFriends. Supports running the batch flow under GFN foreground mode.

assets/tasks/BatchAddFriends.json

BatchUseDetector.jsonEnable BatchUseDetector on GFN-App +1/-0

Enable BatchUseDetector on GFN-App

• Adds GFN-App support alongside Win32-Front in BatchUseDetector. Keeps Wlroots support unchanged.

assets/tasks/BatchUseDetector.json

ClaimSimulationRewards.jsonEnable ClaimSimulationRewards on GFN-App +1/-0

Enable ClaimSimulationRewards on GFN-App

• Adds GFN-App to supported controllers for ClaimSimulationRewards. Allows claiming rewards while playing via GFN native client.

assets/tasks/ClaimSimulationRewards.json

Crafting.jsonEnable Crafting on GFN-App +1/-0

Enable Crafting on GFN-App

• Adds GFN-App to Crafting controller support. Leaves other platforms (ADB/PlayCover/Wlroots) as-is.

assets/tasks/Crafting.json

CreditShopping.jsonEnable CreditShopping on GFN-App +1/-0

Enable CreditShopping on GFN-App

• Adds GFN-App to the controller list for CreditShopping. Keeps existing support for local Win32 and mobile-related controllers intact.

assets/tasks/CreditShopping.json

DailyRewards.jsonEnable DailyRewards flows on GFN-App +5/-0

Enable DailyRewards flows on GFN-App

• Adds GFN-App to multiple DailyRewards task entries that previously supported Win32-Front. Broadens eligibility while keeping the existing task structure and grouping.

assets/tasks/DailyRewards.json

DeliveryJobs.jsonEnable DeliveryJobs on GFN-App +1/-0

Enable DeliveryJobs on GFN-App

• Adds GFN-App to DeliveryJobs controller list. Enables this task under GFN foreground mode with Seize input.

assets/tasks/DeliveryJobs.json

DijiangRewards.jsonEnable DijiangRewards on GFN-App +1/-0

Enable DijiangRewards on GFN-App

• Adds GFN-App to DijiangRewards supported controllers. Keeps existing Win32-Front/ADB/PlayCover/Wlroots support.

assets/tasks/DijiangRewards.json

EnvironmentMonitoring.jsonEnable EnvironmentMonitoring on GFN-App +1/-0

Enable EnvironmentMonitoring on GFN-App

• Adds GFN-App to the EnvironmentMonitoring controller list. Preserves the original supported controller set and behavior.

assets/tasks/EnvironmentMonitoring.json

EssenceFilter.jsonEnable EssenceFilter on GFN-App +1/-0

Enable EssenceFilter on GFN-App

• Adds GFN-App to supported controllers for EssenceFilter. Keeps Wlroots/ADB/PlayCover options unchanged.

assets/tasks/EssenceFilter.json

GearAssembly.jsonEnable GearAssembly on GFN-App +1/-0

Enable GearAssembly on GFN-App

• Adds GFN-App to GearAssembly controller support alongside Win32-Front. No changes to other controller compatibility.

assets/tasks/GearAssembly.json

GiftOperator.jsonEnable GiftOperator on GFN-App +1/-0

Enable GiftOperator on GFN-App

• Adds GFN-App as a supported controller for GiftOperator. Maintains existing support across Wlroots/ADB/PlayCover.

assets/tasks/GiftOperator.json

ImportBluePrints.jsonEnable ImportBluePrints on GFN-App +1/-0

Enable ImportBluePrints on GFN-App

• Adds GFN-App to controllers for ImportBluePrints. Enables blueprint import flows under GFN streaming sessions.

assets/tasks/ImportBluePrints.json

ItemTransfer.jsonEnable ItemTransfer on GFN-App (including option case) +3/-1

Enable ItemTransfer on GFN-App (including option case)

• Adds GFN-App to the top-level ItemTransfer task controller list and to the specific AutoTeleport option controller list. Ensures both task entry points accept GFN-App.

assets/tasks/ItemTransfer.json

ProtocolSpace.jsonEnable ProtocolSpace on GFN-App +1/-0

Enable ProtocolSpace on GFN-App

• Adds GFN-App to ProtocolSpace controllers. Keeps existing Win32-Front/Wlroots support.

assets/tasks/ProtocolSpace.json

PullCountCalculator.jsonEnable PullCountCalculator on GFN-App +1/-0

Enable PullCountCalculator on GFN-App

• Adds GFN-App to PullCountCalculator controller list. Extends availability to GFN sessions while preserving other controller support.

assets/tasks/PullCountCalculator.json

PuzzleSolver.jsonEnable PuzzleSolver on GFN-App +1/-0

Enable PuzzleSolver on GFN-App

• Adds GFN-App support for PuzzleSolver alongside Win32-Front and Wlroots. No changes to task logic.

assets/tasks/PuzzleSolver.json

ReadAllWiki.jsonEnable ReadAllWiki on GFN-App +1/-0

Enable ReadAllWiki on GFN-App

• Adds GFN-App to the controller list for ReadAllWiki. Keeps ADB/PlayCover/Wlroots support unchanged.

assets/tasks/ReadAllWiki.json

RealTimeTask.jsonEnable RealTimeTask on GFN-App +1/-0

Enable RealTimeTask on GFN-App

• Adds GFN-App to RealTimeTask supported controllers. Allows running the task under GFN foreground mode.

assets/tasks/RealTimeTask.json

ReceiveProdManual.jsonEnable ReceiveProdManual on GFN-App +1/-0

Enable ReceiveProdManual on GFN-App

• Adds GFN-App to ReceiveProdManual controller support. Leaves existing Win32-Front/ADB/PlayCover/Wlroots entries intact.

assets/tasks/ReceiveProdManual.json

ResourceRecycleStation.jsonEnable ResourceRecycleStation on GFN-App +1/-0

Enable ResourceRecycleStation on GFN-App

• Adds GFN-App alongside Win32-Front for ResourceRecycleStation. Makes the task selectable while streaming via GFN native client.

assets/tasks/ResourceRecycleStation.json

SeizeDeliveryJobs.jsonEnable SeizeDeliveryJobs on GFN-App +1/-0

Enable SeizeDeliveryJobs on GFN-App

• Adds GFN-App to SeizeDeliveryJobs controller list. Maintains existing Win32-Front/Wlroots support.

assets/tasks/SeizeDeliveryJobs.json

SellProduct.jsonEnable SellProduct on GFN-App +1/-0

Enable SellProduct on GFN-App

• Adds GFN-App to SellProduct supported controllers. Preserves ADB/PlayCover/Wlroots compatibility as before.

assets/tasks/SellProduct.json

SimpleProductionBatchStart.jsonEnable SimpleProductionBatchStart on GFN-App +1/-0

Enable SimpleProductionBatchStart on GFN-App

• Adds GFN-App to the supported controllers for SimpleProductionBatchStart. Keeps other controller entries unchanged.

assets/tasks/SimpleProductionBatchStart.json

StashBackpack.jsonEnable StashBackpack on GFN-App +1/-0

Enable StashBackpack on GFN-App

• Adds GFN-App to StashBackpack controller list. Allows running the stash flow under GFN foreground control.

assets/tasks/StashBackpack.json

SwitchTeam.jsonEnable SwitchTeam on GFN-App +1/-0

Enable SwitchTeam on GFN-App

• Adds GFN-App to SwitchTeam supported controllers. Retains existing compatibility for ADB/PlayCover/Wlroots.

assets/tasks/SwitchTeam.json

TrialOfSwordmancy.jsonEnable TrialOfSwordmancy on GFN-App +1/-0

Enable TrialOfSwordmancy on GFN-App

• Adds GFN-App to TrialOfSwordmancy controller support. Keeps existing Win32-Front/Wlroots behavior unchanged.

assets/tasks/TrialOfSwordmancy.json

VisitFriends.jsonEnable VisitFriends on GFN-App +1/-0

Enable VisitFriends on GFN-App

• Adds GFN-App to VisitFriends supported controllers. Expands the task to GFN streaming sessions without changing task logic.

assets/tasks/VisitFriends.json

Weapon.jsonEnable Weapon upgrade task on GFN-App +1/-0

Enable Weapon upgrade task on GFN-App

• Adds GFN-App to the controller list for the Weapon upgrade task. Maintains existing support for Win32-Front and mobile-related controllers.

assets/tasks/Weapon.json

WebEvent202605.jsonEnable WebEvent202605 on GFN-App +2/-1

Enable WebEvent202605 on GFN-App

• Adds GFN-App alongside Win32-Front for the WebEvent202605 task entry. Keeps grouping and task cases unchanged.

assets/tasks/WebEvent202605.json

@ocsin1

ocsin1 commented Jul 14, 2026

Copy link
Copy Markdown

这个功能建议在maafw支持,属于通用控制器的范围,对于项目来说太重了

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Qodo Logo

zeejaytan and others added 2 commits July 15, 2026 04:39
Replace the hand-written Win32 block (CEFCLIENT / Endfield.*on GeForce NOW /
PrintWindow / Seize) with the framework's Cloud preset:

    "type": "Cloud",
    "cloud": { "provider": "geforce_now", "game_title": "Endfield" }

The framework/MXU resolve the GFN window and screencap/input methods from the
provider, so the config no longer repeats the CEF/PrintWindow/Seize details.
attach_resource_path (resource_gfn colour overrides) is unchanged.

Requires a MaaFramework + MXU build that includes the Cloud controller
(MaaXYZ/MaaFramework + MistEO/MXU Cloud support); stock builds do not
recognise type:"Cloud".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The GFN-App migration to type:"Cloud" failed JSON-schema validation because
the bundled tools/schema/interface.schema.json predates the Cloud controller.
Add "Cloud" to the controller type enum and a "cloud" config block
(provider + game_title), mirroring the MaaFramework schema.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants